 
 


 
  
/* Institutions, Interests and Policy Support: Experimental Evidence from China  */
/* Wenhui Yang, Jing Zhao       */
/* April 2, 2022                            				  */
/* Replication code */




clear
graph drop _all
set matsize 5000
set more off




 
 /*******************************************************************************
 ******* Figure 1 Conjoint Experiment Baseline Results
 ********************************************************************************/
 use "maindata",clear
 
reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub , r cluster(invid)

coefplot  , drop(_cons) xline(0) omitted baselevels    graphregion(color(white))  xlabel(-.4(0.1)0.4)   msize(small)  msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid))   ///
xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings( res_transparent1="{bf:Information Disclosure}"  res_represent1="{bf:Political Representation}"  res_implem1="{bf:Policy Implementation}"  1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels (  res_represent0="No" res_represent1="Yes" ///
          res_transparent0="No" res_transparent1="Yes"  ///
		   res_implem0="Rapid Implementation" res_implem1="Gradual Implementation" ///
		   1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))
graph save "choose", replace

		   
		   
reg support res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub , r cluster(invid)

coefplot  , drop(_cons) xline(0) omitted baselevels    graphregion(color(white))  xlabel(-.4(0.1)0.6)   msize(small)  msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid))   ///
xtitle ("Effects of Attributes on Policy Support",height(5) size(small)) headings( res_transparent1="{bf:Information Disclosure}"  res_represent1="{bf:Political Representation}"  res_implem1="{bf:Policy Implementation}"  1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels (  res_represent0="No" res_represent1="Yes" ///
          res_transparent0="No" res_transparent1="Yes"  ///
		   res_implem0="Rapid Implementation" res_implem1="Gradual Implementation" ///
		   1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))
graph save "support", replace

		   
graph combine choose.gph support.gph , altshrink scheme(s1mono)	row(1) ycommon xcommon	   
 graph export "baseline.pdf", as(pdf) replace

erase choose.gph 
erase support.gph
 
 
 
 
 
  /*******************************************************************************
 ******* Figure 2 interaction of institutions and interests
 ********************************************************************************/
 
 use "maindata",clear


 reg choose res_transparent res_represent subsidy_use subsidy_install subsidy_use_trans subsidy_use_repre subsidy_install_trans  subsidy_install_repre , r cluster(invid)
 	    

coefplot  , keep(subsidy_use_trans subsidy_install_trans subsidy_use_repre subsidy_install_repre) ///
          xline(0) omitted baselevels    graphregion(color(white))  xlabel(-.06(0.02)0.06)   msize(small)  msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid))   ///
         xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings(subsidy_use_trans="{bf:Usage Subsidy}"  subsidy_install_trans="{bf:Installing Subsidy}"    ) ///
        coeflabels (subsidy_use_trans="Usage Subsidy × Information Disclosure"  ///
         subsidy_install_trans="Installing Subsidy × Information Disclosure"   ///
		 subsidy_use_repre="Usage Subsidy × Political Presentation"  ///
		  subsidy_install_repre="Installing Subsidy × Political Presentation" , labsize(vsmall))

		   
 
  graph export "interaction0.pdf", as(pdf) replace

  
  
 
  /*******************************************************************************
 ******* Figure 3 Air quality in local areas during the survey
 ********************************************************************************/
 
 
 use "airquality.dta",clear
 
 
twoway line pm25 pm10 date,  scheme(s2mono) bfcolor(none) xline(15 16 19 20, lcolor(blue) lpattern(dash)) ylab(,nogrid)  ylabel(50[50]150)  ytitle("Air quality, μg/m3", height(5) axis(1)) ///
                           xtitle(Date in February, height(5)) graphregion(fcolor(white))  ///
						   text(140 15.5 "Low Pollution",size(small) color(blue)) ///
						   text(140 19.5 "High Pollution",size(small) color(blue))

 
  graph export "pm.pdf", as(pdf) replace

 

 
 

 
 
 
  /*******************************************************************************
 ******* Figure 4 conditional on level of pollution 
 ********************************************************************************/
 
 use "maindata",clear


reg choose pollution_level res_transparent res_represent res_implem trans_pollution repre_pollution imple_pollution i.res_use_sub usesub2_pollution usesub3_pollution usesub4_pollution i.res_update_sub installsub2_pollution installsub3_pollution installsub4_pollution installsub5_pollution , r cluster(invid)
	    

coefplot  , keep(trans_pollution repre_pollution imple_pollution usesub2_pollution usesub3_pollution usesub4_pollution installsub2_pollution installsub3_pollution installsub4_pollution installsub5_pollution) ///
          xline(0) omitted baselevels    graphregion(color(white))  xlabel(-.4(0.1)0.4)   msize(small)  msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid))   ///
         xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings( trans_pollution="{bf:Information Disclosure}"  repre_pollution="{bf:Political Representation}"  imple_pollution="{bf:Policy Implementation}"  installsub2_pollution="{bf:Installing Subsidy}" usesub2_pollution="{bf:Use Subsidy}" ) ///
        coeflabels (trans_pollution="Information Disclosure × High Pollution"  ///
          repre_pollution="Political Representation × High Pollution"  ///
		  imple_pollution="Gradual Implementation × High Pollution"  ///
		    installsub2_pollution="3000 × High Pollution" installsub3_pollution="5000 × High Pollution" installsub4_pollution="7000 × High Pollution" installsub5_pollution="10,000 × High Pollution"  ///
		   usesub2_pollution="1000 × High Pollution"  usesub3_pollution="2000 × High Pollution"  usesub4_pollution="3000 × High Pollution", labsize(vsmall))

		   
 
  graph export "interaction.pdf", as(pdf) replace

 







 /*******************************************************************************************************************************************
 ******* Appendix
 *******************************************************************************************************************************************/
 
  use "maindata",clear
  
 ***************************************************
*****Table A1 Summary Statistics for Respondents’ Key Characteristics
**************************************************

sutex age gender education pincome party if profile==1&task==1 , minmax
	



 
 
 
 /*******************************************************************************
 *******Table A2 Baseline Conjoint Experiment Results for Figure 1
 ********************************************************************************/
  

 xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub , r cluster(invid)
 eststo
 xi: reg support res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub , r cluster(invid)
 eststo
 esttab, se(3) b(3) star(* .1 ** .05 *** .01) tex r2
eststo clear
 
 
 
 
  /*******************************************************************************
 ******* Table A3 Robustness Check for Conjoint Experiment Assumption
 ********************************************************************************/
  
  
xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub  if task==1, r cluster(invid)
 eststo
xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub if task==2, r cluster(invid)
 eststo
xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub if profile==1, r cluster(invid)
 eststo
xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub  if profile==2, r cluster(invid)
 eststo
xi: reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub  i.profile i.task, r cluster(invid)
 eststo
 esttab, se(3) b(3) star(* .1 ** .05 *** .01) tex r2
eststo clear
 
 
 
 
 


  /*******************************************************************************
 *******Table A4 Conjoint Estimation Results for Interactions of Institutions and Interests
 ********************************************************************************/
 

reg choose res_transparent res_represent subsidy_use subsidy_use_trans  subsidy_use_repre subsidy_install subsidy_install_trans  subsidy_install_repre , r cluster(invid)
eststo 


 esttab, se(3) b(3)  star(* .1 ** .05 *** .01) tex r2
  eststo clear
 
 
 
 
 

  
  
 
 
  
   /*******************************************************************************
 *******Figure A5: Consequences of Interests by Institutions Group
 ********************************************************************************/
 
 **transparency
reg choose    ib(0).res_use_sub ib(1).res_update_sub if res_transparent1==1, r cluster(invid)
estimates store A

reg choose    ib(0).res_use_sub ib(1).res_update_sub if res_transparent1==0, r cluster(invid)
estimates store B


coefplot (A, offset(0.15) msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid) )) (B, offset(-0.15) msymbol(Oh) lpatt(solid)  lwidth(vvthin) ciopts(lpatt(shortdash))), p1(label(Transparency)   )   p2(label(No Transparency) )    ///
       drop(_cons) xline(0) omitted baselevels  graphregion(fcolor(white)) ylab(,nogrid)   xlabel(-0.4(0.1)0.4)   msize(small)     ///
xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings(   1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels ( 1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))

		   	   
drop _est_A _est_B
graph save "trans", replace



 **Representation
reg choose    ib(0).res_use_sub ib(1).res_update_sub if res_represent==1, r cluster(invid)
estimates store A

reg choose    ib(0).res_use_sub ib(1).res_update_sub if res_represent==0, r cluster(invid)
estimates store B


coefplot (A, offset(0.15) msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid) )) (B, offset(-0.15) msymbol(Oh) lpatt(solid)  lwidth(vvthin) ciopts(lpatt(shortdash))), p1(label(Representation)   )   p2(label(No Representation) )    ///
       drop(_cons)  xline(0) omitted baselevels  graphregion(fcolor(white)) ylab(,nogrid)   xlabel(-0.4(0.1)0.4)   msize(small)     ///
xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings(   1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels ( 1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))

		   	   
drop _est_A _est_B
graph save "repre", replace



graph combine trans.gph repre.gph  , altshrink scheme(s1mono)	row(1) ycommon xcommon

erase trans.ghp
erase repre.ghp




    /*******************************************************************************
 *******Table A5 Subgroup Conjoint Results for Institutional Attributes
 ********************************************************************************/

reg choose i.res_use_sub  i.res_update_sub  if res_transparent==1, r cluster(invid)
eststo
reg choose  i.res_use_sub  i.res_update_sub  if res_transparent==0, r cluster(invid)
eststo


reg choose i.res_use_sub  i.res_update_sub  if res_represent==1, r cluster(invid)
eststo
reg choose  i.res_use_sub  i.res_update_sub  if res_represent==0, r cluster(invid)
eststo
  esttab, se(3) b(3) drop(  1.res_update_sub 0.res_use_sub) star(* .1 ** .05 *** .01) tex r2
  eststo clear

  
  
  
  
  
  /*******************************************************************************
 *******Table A6 Conjoint Estimation Results between High pollution and Low Pollution Group
 ********************************************************************************/
 
 


reg choose pollution_level res_transparent res_represent res_implem trans_pollution repre_pollution imple_pollution i.res_use_sub usesub2_pollution usesub3_pollution usesub4_pollution i.res_update_sub installsub2_pollution installsub3_pollution installsub4_pollution installsub5_pollution, r cluster(invid)
eststo
  esttab, se(3) b(3) drop(_cons ) star(* .1 ** .05 *** .01) tex r2
  eststo clear


  
  
   /*******************************************************************************
 *******Figure A6: First and last two days (level of pollution)
 ********************************************************************************/
 



reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if pollution_level==0 , r cluster(invid)
estimates store A

reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if pollution_level==1 , r cluster(invid)
estimates store B



coefplot (A, offset(0.15) msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid) )) (B, offset(-0.15) msymbol(Oh) lpatt(solid)  lwidth(vvthin) ciopts(lpatt(shortdash))), p1(label(Low Pollution)   )   p2(label(High Pollution) )    ///
       drop(_cons) xline(0) omitted baselevels  graphregion(fcolor(white)) ylab(,nogrid)   xlabel(-0.5(0.1)0.5)   msize(small)     ///
title("")  xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings( res_transparent1="{bf:Information Disclosure}"  res_represent1="{bf:Political Representation}"  res_implem1="{bf:Policy Implementation}"  1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels (  res_represent0="No" res_represent1="Yes" ///
          res_transparent0="No" res_transparent1="Yes"  ///
		   res_implem0="Rapid Implementation" res_implem1="Gradual Implementation" ///
		   1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))


drop _est_A _est_B






  /*******************************************************************************
 ******Table A7 Subgroup conjoint results between high pollution and low pollution groups
 ********************************************************************************/
 
 
 
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub  if pollution_level==0, r cluster(invid)
eststo
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub if pollution_level==1, r cluster(invid)
eststo
  esttab, se(3) b(3) drop(1.res_update_sub 0.res_use_sub) star(* .1 ** .05 *** .01) tex r2
  eststo clear

 
 
 
 
 
  
  
  /*******************************************************************************
 ******Figure A7 Conjoint Estimation Results interaction of income and policy attributes
 ********************************************************************************/
 
 ***Inomce level
 reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if pincome<=1.2, r cluster(invid)
estimates store A

reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if pincome>1.2 , r cluster(invid)
estimates store B
coefplot (A, offset(0.15) msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid) )) (B, offset(-0.15) msymbol(Oh) lpatt(solid)  lwidth(vvthin) ciopts(lpatt(shortdash))), p1(label(Low Income) )   p2(label(High Income) )    ///
       drop(_cons res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0) xline(0) omitted baselevels  graphregion(fcolor(white)) ylab(,nogrid)   xlabel(-0.5(0.1)0.5)   msize(small)     ///
title("Panel A: Income Level")  xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings( res_transparent1="{bf:Information Disclosure}"  res_represent1="{bf:Political Representation}"  res_implem1="{bf:Policy Implementation}"  1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels (  res_represent0="No" res_represent1="Yes" ///
          res_transparent0="No" res_transparent1="Yes"  ///
		   res_implem0="Rapid Implementation" res_implem1="Gradual Implementation" ///
		   1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))


drop _est_A _est_B

graph save f1,replace

 ***Inomce Uncertainty
 reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if income_uncertain==1 , r cluster(invid)
estimates store A

reg choose res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0  ib(0).res_use_sub ib(1).res_update_sub if income_uncertain==0 , r cluster(invid)
estimates store B
coefplot (A, offset(0.15) msymbol(O)  lpatt(solid)  lwidth(vvthin) ciopts(lpatt(solid) )) (B, offset(-0.15) msymbol(Oh) lpatt(solid)  lwidth(vvthin) ciopts(lpatt(shortdash))), p1(label(Income Uncertainty)   )   p2(label(No Uncertainty) )    ///
       drop(_cons res_transparent1 res_transparent0 res_represent1 res_represent0 res_implem1 res_implem0) xline(0) omitted baselevels  graphregion(fcolor(white)) ylab(,nogrid)   xlabel(-0.5(0.1)0.5)   msize(small)     ///
title("Panel B: Income Uncertainty")  xtitle ("Effects of Attributes on Policy Scheme being selected",height(5) size(small)) headings( res_transparent1="{bf:Information Disclosure}"  res_represent1="{bf:Political Representation}"  res_implem1="{bf:Policy Implementation}"  1.res_update_sub="{bf:Installing Subsidy}" 0.res_use_sub="{bf:Use Subsidy}" ) ///
coeflabels (  res_represent0="No" res_represent1="Yes" ///
          res_transparent0="No" res_transparent1="Yes"  ///
		   res_implem0="Rapid Implementation" res_implem1="Gradual Implementation" ///
		   1.res_update_sub="2000" 2.res_update_sub="3000" 3.res_update_sub="5000" 4.res_update_sub="7000" 5.res_update_sub="10,000" ///
		   0.res_use_sub="0" 1.res_use_sub="1000" 2.res_use_sub="2000" 3.res_use_sub="3000", labsize(vsmall))


drop _est_A _est_B

graph save f2,replace


 graph combine f1.gph f2.gph   ,altshrink 	graphregion(fcolor(white)) row(1)

 erase f1.gph
 erase f2.gph



 
   /*******************************************************************************
 ******Table A8 Conjoint Estimation Results interaction of income and policy attributes
 ********************************************************************************/
 
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub   if pincome<=1.2, r cluster(invid)
eststo
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub if pincome>1.2, r cluster(invid)
eststo
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub   if income_uncertain==1, r cluster(invid)
eststo
reg choose res_transparent res_represent res_implem i.res_use_sub  i.res_update_sub  if income_uncertain==0, r cluster(invid)
eststo
  esttab, se(3) b(3) drop(1.res_update_sub 0.res_use_sub) star(* .1 ** .05 *** .01) tex r2
  eststo clear

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 